/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Pagos.Herramientas.Generales;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.mail.HtmlEmail;

/**
 *
 * @author FCCCRTI05
 */
public class RecuperarPassword extends HttpServlet
{

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        PrintWriter out = response.getWriter();
        //REINICIO DEL BUFFER
        response.reset();
        response.resetBuffer();
        response.setContentType("text/xml; charset=ISO-8859-1");
        response.setHeader("Cache-Control","no-cache");
        try
        {
            //CONEXION A LA BD
            db.Conexion conectar = new db.Conexion();
            db.CodificadorDecodificador codificador = new db.CodificadorDecodificador();
            conectar.ConectarSQLServer();
            Connection conex = conectar.ObtenerConexionSQLServer();
            if (conex.isClosed() == false)
            {
                if ((request.getParameter("flag") != null)
                &&(request.getParameter("usuario") != null)
                &&(request.getParameter("nombres") != null)
                &&(request.getParameter("mail") != null)
                &&(request.getParameter("flag").equals("ok")))
                {
                    //PARAMETROS
                    String usuario = request.getParameter("usuario");
                    String nombres = request.getParameter("nombres");
                    String mail = request.getParameter("mail");
                    Random r = new Random();
                    String password = Long.toString(Math.abs(r.nextLong()),36);
                    String password_bd = codificador.encrypt(password);
                    PreparedStatement pst = conex.prepareStatement("update F55_PAGOS_USUARIOS set password_usu = "+"'"+password_bd+"'"+
                    ",cambio_pass_usu = 'Si' where usuario_usu like "+"'"+usuario+"'");
                    pst.executeUpdate();
                    pst.close();
                    //PROPIEDADES SISTEMA HOST MAIL
                    Properties propiedades = System.getProperties();
                    propiedades.put("mail.smtp.localhost","www.fcc-ca.com");
                    //PREPARARA CORREO
                    System.out.println("hola mundo");
                    HtmlEmail email = new HtmlEmail();
                    email.setHostName("mail.fcc-ca.com");
                    email.setCharset("ISO-8859-1");
                    email.addTo(mail,nombres);
                    email.setFrom("pagos@fcc-ca.com","Sistema de Notificación de Pagos a Proveedores JD Edward");
                    email.setAuthentication("pagos@fcc-ca.com","5BD0B9");
                    email.setSubject("Recuperación de contraseña de acceso al Sistema de notificación de pagos a proveedores");
                    email.setHtmlMsg("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"+
                    "<html>"+"\n"+
                    "<body style=\"font-family:Verdana, Geneva, sans-serif; font-size:11px;\">"+"\n"+
                    "<span style=\"font-size:14px; text-align:left;\">Usted ha solicitado recuperar la contrase&ntilde;a de acceso al sistema.</b></span>"+"\n"+
                    "<p align=\"left\"><b>La contraseña temporal generada para el acceso es: "+password+"</b></p>"+"\n"+
                    "<p align=\"left\">Ingrese al sistema (<a href=\"http://www.fcc-ca.com/jde/Pagos\">www.fcc-ca.com/jde/Pagos</a>) para que pueda modificarla.</b></p>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:13px; color:#002060\">Sistema de notificación de pagos a proveedores</font><br/>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:13px; color:#002060\">FCC Construcci&oacute;n de Centroam&eacute;rica, S.A</font><br />"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\"><a href=\"http://www.fcc-ca.com\">www.fcc-ca.com</a></font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; color:#000000\"><a href=\"http://www.fcc.es\">www.fcc.es</a></font><br>"+"\n"+
                    "<hr/>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:10px; color:#000000\">Aviso de confidencialidad</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-size:10px; text-align:justify; color:#0000000\">Este correo y la informaci&oacute;n contenida o adjunta al mismo es privada y confidencial y va dirigida exclusivamente a su destinatario. GRUPO FCC informa a quien pueda haber recibido este correo por error que contiene informaci&oacute;n confidencial, cuyo uso, copia, reproducci&oacute;n o distribuci&oacute;n est&aacute; expresamente prohibida. Si no es usted el destinatario del mismo y recibe este correo por error, le rogamos lo ponga en conocimiento del emisor y proceda a su eliminaci&oacute;n sin copiarlo, imprimirlo o utilizarlo de ning&uacute;n modo. Este mensaje ha sido analizado con el sistema antivirus de FCC. No obstante, no se garantiza que pueda contener un virus de nueva aparici&oacute;n.</font><br>"+"\n"+
                    "<font style=\"font-family:Arial, Helvetica, sans-serif; font-weight:bold; font-size:11px; text-align:justify; color:#009900\"><span style=\"font-family:Webdings; font-size:13px;\">P</span> Antes de imprimir este correo piensa si es realmente necesario.</font>"+"\n"+
                    "<p>FAVOR NO RESPONDER A ESTE CORREO.</p>"+"\n"+
                    "</body>"+"\n"+
                    "</html>");
                    email.send();
                    //BITACORA
                    conectar.GuardarEnBitacora("Solicitó recuperación de contraseña de acceso, el usuario solicitante fue: "+usuario+
                    " desde IP origen: "+request.getRemoteAddr());
                    //SALIDA XML
                    out.write("<datos>");
                    out.write("<valido>Si</valido>");
                    out.write("<enviado>Si</enviado>");
                    out.write("</datos>");
                    conex.close();
                }
            }
        }
        catch (Exception x)
        {
            out.write("<datos>");
            out.write("<valido>No</valido>");
            out.write("<enviado>"+x.getMessage()+"</enviado>");
            out.write("</datos>");
        }
        finally
        {
            out.flush();
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        processRequest(request, response);
    }
}